#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<unordered_map>
#include<unordered_set>
#include<algorithm>
using namespace std;
long long species[1000000];
long long weight[1000000];
long long change[1000000];
long long prefix[1000000];
using ll = long long;
using namespace std;
using ll = long long;
const ll N = 1e5 + 9;
int arr[N];
void Solution()
{
    ll n,m;cin >> n >> m;
    for (int i = 1;i <= n;++i) cin >> arr[i];
    ll ret = 0;
    for (int i = 1;i <= n;++i)
    {
        ll Max = 0,Min = 1e7 + 1;
        for (int j = i;i <= n;++j)
        {
            if (arr[j] > Max) Max = arr[j];
            if (arr[j] < Min) Min = arr[j];
            if ((Max - Min) <= m) ret++;
        }
    }
    cout << ret << '\n';
}
int main()
{
    int T;cin >> T;
    while (T--) Solution();
    return 0;
}
//int main()
//{
//    int n = ;
//    arr[1] = 1, arr[2] = 2, arr[3] = 3, arr[4] = 2;
//    int ret = 1;
//    for (int i = 1, j = 1;i <= n;++i)
//    {
//        hash1[arr[i]]++;
//        while (hash1[arr[i]] > 1)
//        {
//            hash1[arr[j]]--;
//            j++;
//        }
//        ret = max(ret, i - j + 1);
//    }
//    return 0;
//}
//int main()
//{
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//    int T;cin >> T;
//    while (T--)
//    {
//        int n;cin >> n;
//        for (int i = 1;i <= n;++i) cin >> arr[i];
//        int ret = 1;
//        for (int i = 1, j = 1;i <= n;++i)
//        {
//            hash1[arr[i]]++;
//            while (hash1[arr[i]] > 1)
//            {
//                hash1[arr[i]]--;
//                j++;
//            }
//            ret = max(ret, j - i + 1);
//        }
//        cout << ret << '\n';
//    }
//    return 0;
//}
//int main()
//{
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//    int T;cin >> T;
//    while (T--)
//    {
//        int n;cin >> n;
//        for (int i = 1;i <= n;i++)	cin >> species[i];
//        for (int i = 1;i <= n;i++)	cin >> weight[i];
//        int ess = 0;
//        for (int i = 1;i <= n;i++) ess += species[i] * weight[i];
//        for (int i = 1;i <= n;i++)
//            change[i] = weight[i] * (species[i] == 0 ? 1 : -1);
//        long long minpre = 0, Max = 0;
//        for (int i = 1;i <= n;i++)
//        {
//            prefix[i] = prefix[i - 1] + change[i];
//            Max = max(Max, prefix[i] - minpre);
//            minpre = min(minpre, prefix[i]);
//            int a = max(0ll, prefix[i]);
//        }
//        cout << ess + Max << '\n';
//    }
//    return 0;
//}
//
//long long species[1000000];
//long long weight[1000000];
//long long change[1000000];
//int main()
//{
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//    int T;cin >> T;
//    while (T--)
//    {
//        int n;cin >> n;
//        for (int i = 1;i <= n;i++)	cin >> species[i];
//        for (int i = 1;i <= n;i++)	cin >> weight[i];
//        int ess = 0;
//        for (int i = 1;i <= n;i++) ess = species[i] * weight[i];
//        for (int i = 1;i <= n;i++)
//            change[i] = weight[i] * (species[i] == 0 ? 1 : -1);
//        int cur = 0, Max = 0;
//            for (int i = 1;i <= n;i++)
//            {
//                if (change[i] < 0) cur = 0;
//                if (change[i] > 0) cur += change[i];
//                    Max = max(cur, Max);
//            }
//        cout << ess + Max << '\n';
//    }
//    return 0;
//}
//int main()
//{
//    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//    int n;cin >> n;
//    vector<int> v(n);
//    for (int i = 0;i < n;i++) cin >> v[i];
//    return 0;
//}